package com.hzy.ums.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 用户微信信息业务对象 ums_member_wechat
 *
 * @author zengxin
 * @date 2023-10-19
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class MemberWechatBo extends BaseEntity {

    /**
     * id
     */
    @NotNull(message = "id不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 会员id
     */
    @NotNull(message = "会员id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long memberId;

    /**
     * 只有在用户将公众号绑定到微信开放平台帐号后，才会出现该字段
     */
    @NotBlank(message = "只有在用户将公众号绑定到微信开放平台帐号后，才会出现该字段不能为空", groups = { AddGroup.class, EditGroup.class })
    private String unionid;

    /**
     * 用户的标识，对当前公众号唯一
     */
    @NotBlank(message = "用户的标识，对当前公众号唯一不能为空", groups = { AddGroup.class, EditGroup.class })
    private String openid;

    /**
     * 小程序唯一身份ID
     */
    @NotBlank(message = "小程序唯一身份ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String routineOpenid;

    /**
     * 用户所在的分组ID（兼容旧的用户分组接口）
     */
    @NotNull(message = "用户所在的分组ID（兼容旧的用户分组接口）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long groupid;

    /**
     * 用户被打上的标签ID列表
     */
    @NotBlank(message = "用户被打上的标签ID列表不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tagidList;

    /**
     * 用户是否订阅该公众号标识
     */
    @NotNull(message = "用户是否订阅该公众号标识不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer subscribe;

    /**
     * 关注公众号时间
     */
    @NotNull(message = "关注公众号时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer subscribeTime;

    /**
     * 小程序用户会话密匙
     */
    @NotBlank(message = "小程序用户会话密匙不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sessionKey;

    /**
     * token
     */
    @NotBlank(message = "token不能为空", groups = { AddGroup.class, EditGroup.class })
    private String accessToken;

    /**
     * 过期时间
     */
    @NotNull(message = "过期时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer expiresIn;

    /**
     * 刷新token
     */
    @NotBlank(message = "刷新token不能为空", groups = { AddGroup.class, EditGroup.class })
    private String refreshToken;

    /**
     * 过期时间
     */
    @NotNull(message = "过期时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date expireTime;


}
